/* 
 * File:   Attribut.h
 * Author: H4314
 *
 * Created on 3 avril 2012, 09:47
 */

#ifndef ATTRIBUT_H
#define	ATTRIBUT_H

#include <string>
#include <iostream>
#include <list>

#include "Node.h"

using namespace std;

class Attribute {
public:
    // Constructeurs & Destructeurs
    Attribute(const string & name, const string & value = "");
    Attribute(const Attribute& orig);
    virtual ~Attribute();
    
    // Static
    
    // Libération de mémoire
    static void CleanItUp(list<Attribute *> & attrList);
    // Nombre d'attributs aloués
    static int ATTRS;
    
    // Getters
    const string & getName() const;
    const string & getValue() const;
    
    // Setters
    void setName(const string & newName);
    void setValue(const string & newValue);
    
    // Operators
    friend ostream & operator<<(ostream & stream, const Attribute & attribute);
    
    // Affiche une chaîne descriptive sur la sortie donnée en paramètre
    void Print(ostream & stream = cout) const;
    
private:
    string name;
    string value;
};

#endif	/* ATTRIBUT_H */
